package controller

import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/mojocn/base64Captcha"
)

// 建一个内存存储器对象，并将其赋值给store变量，以便后续的代码可以使用该内存存储器对象。
var store = base64Captcha.DefaultMemStore

//  单一原则

// GenCaptcha 生成图形验证码
func GenCaptcha(c *gin.Context) {
	//如何去生成图形验证码呢？

	//创建了一个数字验证码驱动程序，参数依次为验证码图片的宽度（80像素）、高度（240像素）、验证码数字个数（5个数字）、噪点密度（0.7）和干扰线宽度（80像素)
	driver := base64Captcha.NewDriverDigit(80, 240, 5, 0.7, 80)
	//实例化图形验证码驱动
	cap := base64Captcha.NewCaptcha(driver, store)
	//生成验证码
	id, b64s, _, err := cap.Generate()
	if err != nil {
		c.JSON(http.StatusOK, gin.H{
			"code": 20001,
			"msg":  "生成验证码失败",
			"data": nil,
		})
		return
	}

	c.JSON(http.StatusOK, gin.H{
		"code": 0,
		"msg":  "生成验证码成功",
		"data": map[string]interface{}{
			"captcha_id": id,
			"pic_path":   b64s,
		},
	})

}
